/**************************************************************************************************
* Title: SumResourceGroup.h
* Author: Gael Huber
* Description: Resource groups manage all renderable resource across the game. Resources are loaded
*	as needed, however all possible resource names are loaded during game initialization.
**************************************************************************************************/
#ifndef __SUMRESOURCEGROUP_H__
#define __SUMRESOURCEGROUP_H__

#include "SumString.h"
#include "SumHashMap.h"
#include "SumFileLoading.h"
#include "SumRenderManager.h"
#include <io.h>
#include <iostream>
#include <fstream>

class ResourceGroup {
public:
	// Default constructor
	ResourceGroup(void);

	// Destructor
	virtual ~ResourceGroup(void);

	// Initialize resource group. Resource groups are initialized by reading in filenames in given 
	// directories and associating names with resources. The actual resources are not loaded until
	// they are needed.
	virtual void initializeResourceGroup(const String& name, const List<String>& directories) = 0;

	// Unload all resources present in the resource group
	virtual void unloadResourceGroup(void) = 0;

	// Unload a specific resource in the group
	virtual void unloadResource(const String& name) = 0;

	// Return the name of the group
	const String& name(void) const;

protected:
	// Resource group name
	String _name;
};

#endif